﻿
// XerpDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "Xerp.h"
#include "XerpDlg.h"
#include "DlgProxy.h"
#include "afxdialogex.h"
#include "LoginPage.h"
#include "SplashDlg.h"
#include "DefaultDlg.h"
#include "DBManage.h"
#include "InputDB.h"
#include "OutputDB.h"




#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
static UINT indicators[] =
{
    IDS_INDICATOR_CLOCK,
	IDS_INDICATOR_MESSAGE
};


class CAboutDlg : public CDialogEx
{
public:
	CAboutDlg();

// 对话框数据
	enum { IDD = IDD_ABOUTBOX };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

// 实现
protected:
	DECLARE_MESSAGE_MAP()
public:
	virtual BOOL OnInitDialog();
};

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()


// CXerpDlg 对话框




IMPLEMENT_DYNAMIC(CXerpDlg, CDialogEx);

CXerpDlg::CXerpDlg(CWnd* pParent /*=NULL*/)
	: CDialogEx(CXerpDlg::IDD, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	m_pAutoProxy = NULL;
}

CXerpDlg::~CXerpDlg()
{
	// 如果该对话框有自动化代理，则
	//  将此代理指向该对话框的后向指针设置为 NULL，以便
	//  此代理知道该对话框已被删除。
	if (m_pAutoProxy != NULL)
		m_pAutoProxy->m_pDialog = NULL;
}

void CXerpDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_TREE_FUNC, m_Tree);
}

BEGIN_MESSAGE_MAP(CXerpDlg, CDialogEx)
	ON_WM_SYSCOMMAND()
	ON_WM_CLOSE()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_NOTIFY(TVN_SELCHANGED, IDC_TREE_FUNC, &CXerpDlg::OnTvnSelchangedTreeFunc)
	ON_WM_SIZE()
	ON_WM_TIMER()
	ON_NOTIFY(TVN_GETINFOTIP, IDC_TREE_FUNC, &CXerpDlg::OnTvnGetInfoTipTreeFunc)
	ON_NOTIFY(NM_DBLCLK, IDC_TREE_FUNC, &CXerpDlg::OnNMDblclkTreeFunc)
END_MESSAGE_MAP()


// CXerpDlg 消息处理程序

BOOL CXerpDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 将“关于...”菜单项添加到系统菜单中。

	// IDM_ABOUTBOX 必须在系统命令范围内。
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);
	// ModifyStyle(0, WS_CLIPCHILDREN);
	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		BOOL bNameValid;
		CString strAboutMenu;
		bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
		ASSERT(bNameValid);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// 设置此对话框的图标。当应用程序主窗口不是对话框时，框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	// TODO: 在此添加额外的初始化代码
	/*CSplashDlg Spdlg;
	if(Spdlg.DoModal() != IDOK)
	{
		Spdlg.DoModal();
		Spdlg.DestroyWindow();
		OnOK();
	}
	*/
	// 自适应分辨率
	int tmp = GetSystemMetrics(SM_CXSCREEN);
	int cx = GetSystemMetrics(SM_CXSCREEN)*650/1920;   
	int cy = GetSystemMetrics(SM_CYSCREEN)*400/1080;
	CRect rc(0, 0, cx * 2, cy * 2);
	MoveWindow(rc, true);
	// login
	
	CLoginPage dlg;
	if(dlg.DoModal() != IDOK)
	{
		OnOK();
	}
	
	// 菜单
	CMenu menu;
	menu.LoadMenu(IDR_MENU_MAIN);  //IDR_MENU_MAIN为菜单栏ID号
	SetMenu(&menu);

	// 展示default页面
	CDefaultDlg *m_InnerDlg;
	m_InnerDlg = new CDefaultDlg(this);
	m_InnerDlg->Create(IDD_DIALOG_DEFAULT);
	ShowChildDlg(m_InnerDlg);
	

	// 获取当前登陆信息，赋给全局变量
	//theApp.CurrentName = theApp.GetProfileString(REG_SECTION_NAME, REG_RENAME_NAME);
	theApp.CurrentIP = theApp.GetProfileString(REG_SECTION_NAME, REG_SERVER_IP);
	theApp.CurrentTree = theApp.GetProfileString(REG_SECTION_NAME, REG_TREE_VALUE);


	// 展示用户信息在页面

	// 展示当前系统时间
	m_bar.Create(this); //We create the status bar
    m_bar.SetIndicators(indicators, 2); //Set the number of panes

    m_bar.SetPaneInfo(0, IDS_INDICATOR_CLOCK, SBPS_NORMAL, 220);
    m_bar.SetPaneInfo(1, IDS_INDICATOR_MESSAGE, SBPS_STRETCH, 0);
    RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, IDS_INDICATOR_CLOCK);
	CTime t1;
    t1 = CTime::GetCurrentTime();
    m_bar.SetPaneText(0, t1.Format("%Y-%m-%d %H:%M:%S %a 第%U周"));
	// 欢迎字样，带上待办事件的个数
	CString welcomeMsg;
	welcomeMsg.Format(_T("欢迎 %s") ,theApp.CurrentName);
    m_bar.SetPaneText(1, welcomeMsg);
	SetTimer(1,1000,NULL);

	// 加载树
	LoadTree(theApp.CurrentTree);

	// 展开树
	MyExpandTree(m_Tree.GetRootItem());
	return TRUE;  // 除非将焦点设置到控件，否则返回 TRUE
}

void CXerpDlg::LoadTree(CString treeFile)
{
	HICON hIcon[3];      // 图标句柄数组   
    HTREEITEM hRoot;     // 树的根节点的句柄   
    HTREEITEM hCataItem; // 可表示任一分类节点的句柄   
    HTREEITEM hArtItem;  // 可表示任一文章节点的句柄   
	/*
    // 加载三个图标，并将它们的句柄保存到数组   
    // hIcon[0] = theApp.LoadIcon(IDI_WEB_ICON);   
    // hIcon[1] = theApp.LoadIcon(IDI_CATALOG_ICON);   
    // hIcon[2] = theApp.LoadIcon(IDI_ARTICLE_ICON);   
	
    // 创建图像序列CImageList对象   
    m_imageList.Create(32, 32, ILC_COLOR32, 3, 3);   
    // 将三个图标添加到图像序列   
    for (int i=0; i<3; i++)   
    {   
        m_imageList.Add(hIcon[i]);   
    }   
  
    // 为树形控件设置图像序列   
    m_webTree.SetImageList(&m_imageList, TVSIL_NORMAL);   
	*/
    // 插入根节点
    hRoot = m_Tree.InsertItem(_T("库存管理"), 0, 0);
    // 在根节点下插入子节点
	// 仓库编号、仓库名称、仓库类型(下拉列表)、仓库说明、启用状态(下拉列表，默认为启用)。
    hCataItem = m_Tree.InsertItem(_T("库存档案"), 1, 1, hRoot, TVI_LAST);
    hArtItem = m_Tree.InsertItem(_T("仓库设置"), 2, 2, hCataItem, TVI_LAST);
    hArtItem = m_Tree.InsertItem(_T("导入导出"), 2, 2, hCataItem, TVI_LAST);
	// 基本信息：入库单编号、入库单主题、源单类型(下拉列表，缺省为“采购到货通知单”，不可修改)、
	// 采购到货通知单(选择)、供应商名称、采购部门、采购员、交货人(弹出窗口选择)、验收人(弹出窗口选择)、
	// 入库部门(选择)、人库人(弹出窗口选择)、入库时间(日期控件)、摘要
	// 
	// 合计信息：入库数量合计、入库金额合计。
	// 备注信息：制单人(当前用户)、制单日期(当前日期)、单据状态(新建时缺省为制单)、备注、确认人、确认日期、
	// 结单人、结单日期、最后更新人、最后更新时间。
	// 
	// 入库单明细：序号(自动)、物品编号、物品名称、规格、单位、应收数量、仓库(下拉列表)、实收数量、入库单价、
	// 税率、入库金额、备注、源单编号、源单行号。
    hCataItem = m_Tree.InsertItem(_T("入库管理"), 1, 1, hRoot, TVI_LAST);
    hArtItem = m_Tree.InsertItem(_T("新建采购入库单"), 2, 2, hCataItem, TVI_LAST);
    hArtItem = m_Tree.InsertItem(_T("新建生产完工入库单"), 2, 2, hCataItem, TVI_LAST);
    hArtItem = m_Tree.InsertItem(_T("新建其他入库单"), 2, 2, hCataItem, TVI_LAST);
    hArtItem = m_Tree.InsertItem(_T("采购入库单列表"), 2, 2, hCataItem, TVI_LAST);
    hArtItem = m_Tree.InsertItem(_T("生产完工入库单列表"), 2, 2, hCataItem, TVI_LAST);
    hArtItem = m_Tree.InsertItem(_T("其他入库单列表"), 2, 2, hCataItem, TVI_LAST);
    hArtItem = m_Tree.InsertItem(_T("红冲入库单列表"), 2, 2, hCataItem, TVI_LAST);

    hCataItem = m_Tree.InsertItem(_T("出库管理"), 1, 1, hRoot, TVI_LAST);
    hArtItem = m_Tree.InsertItem(_T("新建销售出库单"), 2, 2, hCataItem, TVI_LAST);
    hArtItem = m_Tree.InsertItem(_T("新建生产出库单"), 2, 2, hCataItem, TVI_LAST);
    hArtItem = m_Tree.InsertItem(_T("新建其他出库单"), 2, 2, hCataItem, TVI_LAST);

    hCataItem = m_Tree.InsertItem(_T("库存查询"), 1, 1, hRoot, TVI_LAST);
    hArtItem = m_Tree.InsertItem(_T("玛雅文明文章1"), 2, 2, hCataItem, TVI_LAST);
    hArtItem = m_Tree.InsertItem(_T("IT笑话2"), 2, 2, hCataItem, TVI_LAST);

	
    /* 插入根节点
    hRoot = m_Tree.InsertItem(_T("管理员可见"), 0, 0);
    // 在根节点下插入子节点   
    hCataItem = m_Tree.InsertItem(_T("人员管理"), 1, 1, hRoot, TVI_LAST);
    m_Tree.SetItemData(hCataItem, 1);
    hArtItem = m_Tree.InsertItem(_T("角色管理"), 2, 2, hCataItem, TVI_LAST);
    m_Tree.SetItemData(hArtItem, 2);
    hArtItem = m_Tree.InsertItem(_T("用户管理"), 2, 2, hCataItem, TVI_LAST);
    m_Tree.SetItemData(hArtItem, 3);
    // 在根节点下插入子节点   
    hCataItem = m_Tree.InsertItem(_T("仓库管理"), 1, 1, hRoot, TVI_LAST);
    m_Tree.SetItemData(hCataItem, 1);
    hArtItem = m_Tree.InsertItem(_T("全局数据"), 2, 2, hCataItem, TVI_LAST);
    m_Tree.SetItemData(hArtItem, 2);
    hArtItem = m_Tree.InsertItem(_T("日志查看"), 2, 2, hCataItem, TVI_LAST);
    m_Tree.SetItemData(hArtItem, 3);
	*/
}

void CXerpDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialogEx::OnSysCommand(nID, lParam);
	}
}

// 如果向对话框添加最小化按钮，则需要下面的代码
//  来绘制该图标。对于使用文档/视图模型的 MFC 应用程序，
//  这将由框架自动完成。

void CXerpDlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); // 用于绘制的设备上下文

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// 使图标在工作区矩形中居中
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// 绘制图标
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialogEx::OnPaint();
	}
}

//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CXerpDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}

// 当用户关闭 UI 时，如果控制器仍保持着它的某个
//  对象，则自动化服务器不应退出。这些
//  消息处理程序确保如下情形: 如果代理仍在使用，
//  则将隐藏 UI；但是在关闭对话框时，
//  对话框仍然会保留在那里。

void CXerpDlg::OnClose()
{
	if (CanExit())
		CDialogEx::OnClose();
}

void CXerpDlg::OnOK()
{
	if (CanExit())
		CDialogEx::OnOK();
}

void CXerpDlg::OnCancel()
{
	if (CanExit())
		CDialogEx::OnCancel();
}

BOOL CXerpDlg::CanExit()
{
	// 如果代理对象仍保留在那里，则自动化
	//  控制器仍会保持此应用程序。
	//  使对话框保留在那里，但将其 UI 隐藏起来。
	if (m_pAutoProxy != NULL)
	{
		ShowWindow(SW_HIDE);
		return FALSE;
	}

	return TRUE;
}

// 选中响应
void CXerpDlg::OnTvnSelchangedTreeFunc(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码

	*pResult = 0;
    CString strText; // 树节点的标签文本字符串
    
    // 获取当前选中节点的句柄
    HTREEITEM hItem		= m_Tree.GetSelectedItem();
	HTREEITEM RootItem	= m_Tree.GetRootItem();
	// 如果选中的是根节点，那么就不显示信息
	if (hItem != RootItem){
		// 获取选中节点的标签文本字符串
		strText = m_Tree.GetItemText(hItem);
		// 将字符串显示到编辑框中
		m_bar.SetPaneText(1, strText);
	}
}


BOOL CAboutDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// TODO:  在此添加额外的初始化

	return TRUE;  // return TRUE unless you set the focus to a control
	// 异常: OCX 属性页应返回 FALSE
}


void CXerpDlg::OnSize(UINT nType, int cx, int cy)
{
	CDialogEx::OnSize(nType, cx, cy);
	// TODO: 在此处添加消息处理程序代码
	CWnd *pWnd;
	int woc;
	//列出所有控件
	HWND hwndChild=::GetWindow(m_hWnd,GW_CHILD);
	//判定是否为最小状态，是的话就不进行重绘
	if(!cx||!cy){
		return;
	}else
	{
		while(hwndChild)
		{
			woc   = ::GetDlgCtrlID(hwndChild);	//获得控件的ID; Resource.h
			pWnd  = GetDlgItem(woc);			//获取ID为woc的空间的句柄
			int i = 0;
			if(pWnd)
			{
				CRect rect;					//获取当前窗口的大小
				pWnd->GetWindowRect(&rect);
				ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标
				for(i = 0; i < 6; i++)
				{
					if(m_control[i].Id == woc)//如果保存的有该控件与窗口比值，直接乘上当前窗口大小
					{
						rect.left	= m_control[i].scale[0] * cx;
						rect.right	= m_control[i].scale[1] * cx;
						rect.top	= m_control[i].scale[2] * cy;
						rect.bottom	= m_control[i].scale[3] * cy;
						break;
					}
				}
				if(i==6)
				{
					for(i = 0; i < 6; i++)
					{
						if(m_control[i].Id == -2)//没有找到控件的比值，则选择一个没有数据的空间进行保存
						{
							m_control[i].Id			= woc;
							m_control[i].scale[0]	= (double)rect.left/ m_rect.Width();//注意类型转换，不然保存成long型就直接为0了
							m_control[i].scale[1]	= (double)rect.right/ m_rect.Width();
							m_control[i].scale[2]	= (double)rect.top / m_rect.Height();
							m_control[i].scale[3]	= (double)rect.bottom/ m_rect.Height();
							/////调整控件大小
							rect.left	= m_control[i].scale[0] * cx;
							rect.right	= m_control[i].scale[1] * cx;
							rect.top	= m_control[i].scale[2] * cy;
							rect.bottom = m_control[i].scale[3] * cy;
							break;
						}
					}
				}
				pWnd->MoveWindow(rect);//设置控件大小
			}
			hwndChild=::GetWindow(hwndChild, GW_HWNDNEXT);
		}
		GetClientRect(&m_rect);//将变化后的对话框大小设为旧大小
	}
	// login之后才进行的操作
	
	if (theApp.CurrentName != _T(""))
	{
		CRect rect;
		GetDlgItem(IDC_STATIC_DIG)->GetWindowRect(&rect);
		ScreenToClient(&rect);			// 这里需要提供相对于dialog的位置，提供给子窗口使用
		theApp.CurrentPicRect = &rect;	// 将更新后的piccontrol 大小记录下来
	
		// 子窗口变动
		Invalidate(FALSE);				// 重绘，使得不会出现闪屏
		m_CurrentDlg->MoveWindow(&rect);
	}
}


void CXerpDlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	CTime t1;
    t1 = CTime::GetCurrentTime();
    m_bar.SetPaneText(0, t1.Format("%Y-%m-%d %H:%M:%S %a 第%U周"));		// 

	CDialogEx::OnTimer(nIDEvent);
}

// 显示提示信息
void CXerpDlg::OnTvnGetInfoTipTreeFunc(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMTVGETINFOTIP pGetInfoTip = reinterpret_cast<LPNMTVGETINFOTIP>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	*pResult = 0;
    NMTVGETINFOTIP* pTVTipInfo	= (NMTVGETINFOTIP*)pNMHDR;	// 将传入的pNMHDR转换为NMTVGETINFOTIP指针类型
    HTREEITEM RootItem			= m_Tree.GetRootItem();		// 获取树的根节点
    CString strText;										// 每个树节点的提示信息

    if (pTVTipInfo->hItem == RootItem)
    {
        // 如果鼠标划过的节点是根节点，则提示信息为空
        strText = _T("");
    }
    else
    {
        // 如果鼠标划过的节点不是根节点，则将该节点的附加32位数据格式化为字符串
        strText.Format(_T("%d"), pTVTipInfo->lParam);
    }
    // 将strText字符串拷贝到pTVTipInfo结构体变量的pszText成员中，这样就能显示内容为strText的提示信息
    wcscpy(pTVTipInfo->pszText, strText);
}

// 双击切换到对应子窗口
void CXerpDlg::OnNMDblclkTreeFunc(NMHDR *pNMHDR, LRESULT *pResult)
{
	// TODO: 在此添加控件通知处理程序代码
	*pResult = 0;
    CString strText; // 树节点的标签文本字符串
    
    // 获取当前选中节点的句柄
    HTREEITEM hItem		= m_Tree.GetSelectedItem();
	HTREEITEM RootItem	= m_Tree.GetRootItem();
	if (hItem != RootItem){
		// 获取选中节点的标签文本字符串
		strText = m_Tree.GetItemText(hItem);
		// 将字符串显示到编辑框中
		if (strText == _T("仓库设置")){
			// 关闭之前的子窗口
			m_CurrentDlg->ShowWindow(FALSE);
			m_CurrentDlg->UpdateWindow();//更新对话框窗口
			CDBManage *m_ChildDlgDBM;
			m_ChildDlgDBM = new CDBManage(this);
			m_ChildDlgDBM->Create(IDD_DIALOG_CHILD_DB_M);
			ShowChildDlg(m_ChildDlgDBM);
		}else if(strText == _T("新建采购入库单")){
			// 关闭之前的子窗口
			m_CurrentDlg->ShowWindow(FALSE);
			m_CurrentDlg->UpdateWindow();//更新对话框窗口
			CInputDB *m_ChildDlgIDB;
			m_ChildDlgIDB = new CInputDB(this);
			m_ChildDlgIDB->Create(IDD_DIALOG_CHILD_INSERT_DB);
			ShowChildDlg(m_ChildDlgIDB);

		}else if(strText == _T("新建销售出库单")){
			// 关闭之前的子窗口
			m_CurrentDlg->ShowWindow(FALSE);
			m_CurrentDlg->UpdateWindow();//更新对话框窗口
			COutputDB *m_ChildDlgODB;
			m_ChildDlgODB = new COutputDB(this);
			m_ChildDlgODB->Create(IDD_DIALOG_CHILD_OUT_DB);
			ShowChildDlg(m_ChildDlgODB);

		}
	}
}

// 展开所有节点
void CXerpDlg::MyExpandTree(HTREEITEM hTreeItem)  
{  
    if(!m_Tree.ItemHasChildren(hTreeItem))  
    {
        return;
    }
    HTREEITEM hNextItem = m_Tree.GetChildItem(hTreeItem);
    while (hNextItem != NULL)
    {
        MyExpandTree(hNextItem);
        hNextItem = m_Tree.GetNextItem(hNextItem, TVGN_NEXT);
    }
    m_Tree.Expand(hTreeItem,TVE_EXPAND);
}

// 展示子窗口
void CXerpDlg::ShowChildDlg(CDialogEx *m_InnerDlg){
	CRect rect;
	GetDlgItem(IDC_STATIC_DIG)->GetWindowRect(&rect);
	ScreenToClient(&rect);   //千万注意别用成ClientToScreen(&rect);
	
	if (GetDlgItem(IDC_STATIC_DIG))//得到状态栏图片控件
	{
		GetDlgItem(IDC_STATIC_DIG)->MoveWindow(rect);//把图片控件移动到这个位置
		if (m_InnerDlg){
			m_InnerDlg->MoveWindow(&rect);//把自对话框移动到这个位置
			// 通知子窗口改变大小
			CString m_strStatusMsg;
			CRect rect;
			GetDlgItem(IDC_STATIC_DIG)->GetWindowRect(&rect);
			ScreenToClient(&rect);		// 这里需要提供相对于dialog的位置，提供给子窗口使用
			theApp.CurrentPicRect = &rect;// 将更新后的pic control 大小记录下来
			m_strStatusMsg.Format(_T("%d-%d-%d-%d"), rect.left, rect.right, rect.top, rect.bottom);
			::SendMessage(m_InnerDlg->m_hWnd, WM_CMDMODIFYSIZE, (WPARAM)(LPCTSTR)m_strStatusMsg, NULL);
			m_InnerDlg->ShowWindow(SW_SHOW);//显示对话框
			m_InnerDlg->UpdateWindow();//更新对话框窗口
			m_CurrentDlg = m_InnerDlg;
		}
	}
}